/*  ----------------------------------------------------------------------------
 *  Arello Mobile
 *  Fast 3d Engine
 *  ----------------------------------------------------------------------------
 * Except where otherwise noted, this work is licensed under
 * http://creativecommons.org/licenses/by/3.0
 */
#pragma once

#include "Converter.h"
#include <lib3d/material/Shader.h>
#include "TextData.h"

namespace liba {
namespace lib3d {
namespace node {

struct TextRenderInfo;
class TextData;

class TextImpl
{
public:
	TextImpl();
	TextImpl(const TextImpl & other);
	virtual ~TextImpl();

	void SetTextData(TextData* value);
	const TextData* GetTextData() const;

	virtual void render_to_list( hard::Hardware * hardware, TextRenderInfo* tri, hard::RenderList * render_list ) = 0;
	virtual float get_text_width(const std::wstring & text) = 0;
	virtual float get_text_height() = 0;
	virtual void text_data_changed() = 0;	
	virtual void change_valignment(VAlignment value) = 0;
	
	virtual TextImpl * clone() = 0;
protected:
	TextData* textData;
};

} // namespace node
} // namespace lib3d
} // namespace liba